//
//  Part.h
//  MailDelivery
//
//  Created by Dante Palacios on 9/26/09.
//  Copyright 2009 Dante Palacios. All rights reserved.
//

/*!
 @header Part.h
 @abstract The methods listed here may disappear or change their names without prior notice. For more information, contact palacios.dante\@gmail.com.
 */

#import <Foundation/Foundation.h>

/*!
 @class Part
 @abstract This class defines what email messages are composed of.
 @discussion An email message is composed of various parts which can be text parts, attachments and so on. Even a message is a part. This class is not fully implemented.
 */

@interface Part : NSObject <NSCopying, NSCoding> {
@private;
	id _content;
	NSString *_contentType;
	NSString *_contentID;
	NSString *_contentDisposition;
	NSString *_contentTransferEncoding;
	NSString *_name;
	NSString *_filename;
	NSString *_format;
	NSString *_boundary;
	NSString *_protocol;
	NSString *_charset;
	NSDictionary *_headers;
}

/*!
 @property content
 @abstract The content of the part. 
 */

@property (retain) id content;

/*!
 @property name
 @abstract \@"name=", generally the name of a file.
 */

@property (copy) NSString *name;

/*!
 @property contentType
 @abstract \@"Content-Type:", he content type of the part.
 */

@property (copy) NSString *contentType;

/*!
 @property contentID
 @abstract \@"Content-Id:", the content id of the part.
 */

@property (copy) NSString *contentID;

/*!
 @property contentDisposition
 @abstract \@"Content-Disposition:", the content disposition of the part.
 */

@property (copy) NSString *contentDisposition;

/*!
 @property contentTransferEncoding
 @abstract \@"Content-Transfer-Encoding:", transfer encoding.
 */

@property (copy) NSString *contentTransferEncoding;

/*!
 @property filename
 @abstract \@"filename=", the filename of the part.
 */

@property (copy) NSString *filename;

/*!
 @property format
 @abstract the format of the part, used depending of the context.
 */

@property (copy) NSString *format;

/*!
 @property boundary
 @abstract \@"boundary=", the boundary delimiter of the part.
 */

@property (copy) NSString *boundary;

/*!
 @property protocol
 @abstract the protocol of the part.
 */

@property (copy) NSString *protocol;

/*!
 @property charset
 @abstract \@"charset=", the charset of the part.
 */

@property (copy) NSString *charset;

/*!
 @property headers
 @abstract the headers of the part.
 */

@property (retain) NSDictionary *headers;

/*!
 @property relatedBoundary
 @abstract .
 */

@property (readonly) NSString *relatedBoundary;

@end
